package br.com.sgi.bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import br.com.sgi.autentication.UsuarioLogado;
import br.com.sgi.enuns.UfEnum;
import br.com.sgi.model.Igreja;
import br.com.sgi.model.Sistema;
import br.com.sgi.model.Users;
import br.com.sgi.service.IgrejaService;
import br.com.sgi.service.SistemaService;
import br.com.sgi.util.Mensagem;

@Controller("igrejaCadastroBean")
@Scope("request")
public class IgrejaCadastroBean {

	@Autowired
	private IgrejaService igrejaService;
	
	@Autowired
	private SistemaService sistemaService;
	
	private Igreja igreja;
	private Igreja igrejaPesquisa;
	private Long coIgreja;
	
	private List<Igreja> listaIgrejas;
	
	private List<SelectItem> listaUfs;
	
	/**
	 * pesquisa de igreja
	 */
	public void pesquisarIgreja(){
		listaIgrejas = igrejaService.buscarIgrejasPorFiltros(igrejaPesquisa.getNome(), igrejaPesquisa.getCoSeqIgreja(), igrejaPesquisa.getCnpj());
	}
	
	/**
	 * salva Igreja
	 */
	public void salvar(){		
		Users users = UsuarioLogado.getUsuarioLogado();
		if(igreja != null && users != null){
			Sistema sistema = null;
			if(igreja.getCoSeqIgreja() == null){
				sistema = sistemaService.findById(users.getSistema().getCoSeqSistema())  ;
				igreja.setSistema(sistema);
				igrejaService.salvar(igreja);
				listaIgrejas = igrejaService.buscarTodasIgrejas();
				Mensagem.infoMsg("sucesso.MGS_02");
			}else{
				igrejaService.atualizar(igreja);
				listaIgrejas = igrejaService.buscarTodasIgrejas();
				Mensagem.infoMsg("sucesso.MGS_03");
				igreja = new Igreja();
			}
				
		}
	}
	
	/**
	 * realiza a exclusao de uma igreja
	 */
	public void excluir(){
		if(coIgreja != null){
			igrejaService.excluir(coIgreja);
			listaIgrejas = igrejaService.buscarTodasIgrejas();
			Mensagem.infoMsg("sucesso.MSG_01");
		}
	}
	
	public List<Igreja> getListaIgrejas() {
		if(listaIgrejas == null)
			listaIgrejas = igrejaService.buscarTodasIgrejas();
		return listaIgrejas;
	}

	public void setListaIgrejas(List<Igreja> listaIgrejas) {
		this.listaIgrejas = listaIgrejas;
	}

	public Igreja getIgrejaPesquisa() {
		if(igrejaPesquisa == null)
			igrejaPesquisa = new Igreja();
		return igrejaPesquisa;
	}

	public void setIgrejaPesquisa(Igreja igrejaPesquisa) {
		this.igrejaPesquisa = igrejaPesquisa;
	}
	
	public Igreja getIgreja() {
		if(igreja == null)
			igreja = new Igreja();
		return igreja;
	}

	public void setIgreja(Igreja igreja) {
		this.igreja = igreja;
	}

	public Long getCoIgreja() {
		return coIgreja;
	}

	public void setCoIgreja(Long coIgreja) {
		this.coIgreja = coIgreja;
	}

	public List<SelectItem> getListaUfs() {
		if(listaUfs == null){
			listaUfs = new ArrayList<SelectItem>();
			for(UfEnum uf: UfEnum.values()){
				listaUfs.add(new SelectItem(uf.getSigla(), uf.getSigla()));
			}
		}
		return listaUfs;
	}

	public void setListaUfs(List<SelectItem> listaUfs) {
		this.listaUfs = listaUfs;
	}

	


	
}
